package baduga.core;

import java.util.HashMap;
import java.util.Map;
/**
 * 
 */

/**
 * @author Janek
 *
 */
public class Database_Messages {
	/** Integer to opakowany int */
	public Map<Integer, String> messages = new HashMap<Integer, String>();

	
	/**
	 * Inicjalizuje klasę oraz ładuje Stringi
	 */
	public Database_Messages()
	{
		this.setmessages();
	}
	
	
	
	//------------------ [Komunikaty] - #START ------------------
	
	/**
	 * Klasa wrzuca Stringi do HashMapy
	 */
	private void setmessages()
	{
		
		//    3F = 1/4   | 7F = 1/2 |  BE = 3/4 
		
	
		/** ---------------- [0x00] ---------------- */
		this.messages.put(0x0000, "$"); //Symbol Waluty
		this.messages.put(0x0001, "---"); //Symbol zapchania
		
		//Server MSG [Symbols]
		this.messages.put(0x003F, "| Client ");
		this.messages.put(0x0040, " ) - ");
		this.messages.put(0x0041, "| Server | - ");
		
		
		
		//Server MSG [Warning & Error]
		this.messages.put(0x00FE, "Przekroczono limit prób znalezienia wolnego identyfikatora.");
		this.messages.put(0x00FF, "Nie kontrolowane wznowienie wątku.");
		
		
		
		/** ---------------- [0x01] Gui ---------------- */
		this.messages.put(0x0100, "Wystąpił problem"); //Tytuł komunikatu błędu |Standartowy|
		
		
		
		
		//Lista stołów
		this.messages.put(0x01F5, "Prosze wybrać stół. ");
		this.messages.put(0x01F6, "Proszę utworzyć stół lub odświeżyć listę, aby móc zagrać.");
		
		
		
		//Tworzenie Stołu
		this.messages.put(0x01F8, "Twój portfel ma kwotę mniejszą od "); //Tekst podczas, gdy masz mniej kasy niż wymagane do założenia stołu
		
		//Tworzenie Stołu - Walidacja
		this.messages.put(0x01F9, "Nie prawidłowa minimalnać żetonów (wejściówki)"); //Przekroczenie limitów ustalającego minimalną kwtoę by wejść do do stołu
		this.messages.put(0x01FA, "Wartość małej ciemnej po za przedziałem."); //Przekroczenie określonego przedziału (Mała Ciemna)
		this.messages.put(0x01FB, "Wartość dużej ciemnej po za przedziałem."); //Przekroczenie określonego przedziału (Duża Ciemna)
		this.messages.put(0x01FC, "Ilość obserwatorów po za przedziałem."); //Przekroczenie określonego przedziału (Ilość obserwatorów)
		this.messages.put(0x01FD, "Ilość graczy po za przedziałem."); //Przekroczenie określonego przedziału (Ilośc graczy)
		this.messages.put(0x01FE, "Długość nazwy stołu po za przedziałem. "); //Przekroczenie określonego przedziału (Długość nazwy stołu)
		this.messages.put(0x01FF, "Czas na ruch gracza po za przedziałem."); //Przekroczenie określonego przedziału (Czas na ruch gracza)

		
		
		/** ---------------- [0x02] NetworkAPI ---------------- */
		//Client MSG [Positive & Information]
		this.messages.put(0x0200, "Trwa łączenie..."); //Tekst podczas łączenia
		this.messages.put(0x0201, "Połączenie udane"); //Gdy połączenie się udało
		
		
		
		
		
		
		//Server MSG [Warning & Error]
		this.messages.put(0x027B, "Przekroczony limit połączeń.");
		this.messages.put(0x027C, "Przekroczony limit połączeń.");
		this.messages.put(0x027D, "Wystąpił błąd podczas próby utworzenia socketa dla klienta");
		this.messages.put(0x027E, "Wystąpił błąd podczas próby wysłania danych do klienta");
		this.messages.put(0x027F, "Port o numerze: "); //[1/2]
		this.messages.put(0x0280, " jest zajęty lub nie można utworzyć socketa "); //[2/2] Informacja o problemie
		this.messages.put(0x0281, " Wystąpił błąd podczas tworzenia socketa dla klienta podłączone na port "); //[1/2] 
		this.messages.put(0x0282, " jest zajęty lub nie można utworzyć socketa "); //[2/2] Problem z utworzeniem Socketa
		this.messages.put(0x0283, " Wystąpił błąd podcza próby odczytania danych od klienta.");
		this.messages.put(0x0284, " Wystąpił problem podczas przejmowania strumieni z gniazka klienta. ");
		
		
		//Client MSG [Warning & Error]
		this.messages.put(0x02F3, "Nie udało się wysłać żądania do serwera."); 
		this.messages.put(0x02F4, "Wystąpił błąd podczas zamykania wątku (socketu/ strumieni)."); 
		this.messages.put(0x02F5, "Wystąpił błąd podczas zapisu do strumienia wyjścia."); 
		this.messages.put(0x02F6, "Wystąpił błąd podczas tworzenia socketa I/O."); 
		this.messages.put(0x02F7, "Wystąpił błąd podczas przetwarzania danych do postaci JSON."); 
		this.messages.put(0x02F8, "Wystąpił błąd podczas odczytu z strumienia wejścia."); 
		this.messages.put(0x02F9, "Wystąpił błąd podczas zamykania strumienii."); 
		this.messages.put(0x02FA, "Wystąpił błąd podczas otwierania strumienii."); 
		this.messages.put(0x02FB, "Nie udało się znaleźć podanego hosta."); 
		this.messages.put(0x02FC, "Nie udało się rozłączyć"); //Problem z połączeniem
		this.messages.put(0x02FD, "Nieprawidłowa długośc nickname");
		this.messages.put(0x02FE, "Zły adres ip, host lub port"); //Problem z portem
		this.messages.put(0x02FF, "Wystąpił błąd podczas próby połączenia z "); //Problem z połączeniem
		
		
		/** ---------------- [0x03] Player, Table class init ---------------- */
		//Servec MSG [Positive & Information]
		this.messages.put(0x0340, "Trwa uruchamianie gry...");
		this.messages.put(0x0341, "Wybieranie Dealera...");
		this.messages.put(0x0342, "Rozdawanie kart...");
		this.messages.put(0x0343, "Rozpoczęcie Licytacji...");
		this.messages.put(0x0344, "Wymiana Kart...");
		this.messages.put(0x0345, "Koniec gry...");
		
		
		
		//Serv MSG [Warning & Error]
		
		//-- Moves Warning
		this.messages.put(0x03A0, "Aktualnie nie trwa gra.");
		this.messages.put(0x03A1, "Niezidentyfikowany ruch.");
		this.messages.put(0x03A2, "Niedozwolonych ruch na tym etapie gry.");
		this.messages.put(0x03A3, "Brak uprawnień do wykonania ruchu.");
		this.messages.put(0x03A4, "Nieprawidłowa kwota lub nieposiadasz wystarczających funduszy.");
		this.messages.put(0x03A5, "Masz możliwość wykonania call lub raise");
		this.messages.put(0x03A6, "Ten błąd nigdy nie powinien się pojawić |Zakaz folda|");
		this.messages.put(0x03A7, "Nie możesz wykonać tego ruchu.");
		this.messages.put(0x03A8, "Aktualnie nie jest Twoja tura.");
		this.messages.put(0x03A9, "");
		this.messages.put(0x03AA, "");
		this.messages.put(0x03AB, "");
		this.messages.put(0x03AC, "");
		this.messages.put(0x03AD, "");
		this.messages.put(0x03AE, "");
		this.messages.put(0x03AF, "");
		
		
		
		//-- Moves Type
		this.messages.put(0x03D0, "Egzekwuje swój ruch");
		this.messages.put(0x03D1, "Wymienił kart: ");
		this.messages.put(0x03D2, "Rozdał karty");
		this.messages.put(0x03C3, "Nie wykonał ruchu."); //Without move id
		this.messages.put(0x03C4, "Zagrał za wszystko co ma."); //Allin
		this.messages.put(0x03C5, "Uległ emocjom i się wycofał."); //Fold
		this.messages.put(0x03C6, "Wyrównuje swój zakład do "); //Call
		this.messages.put(0x03C7, "Podbił/a stawkę do "); //Raise
		this.messages.put(0x03C8, "Czeka.. i obserwuje przeciwników... "); //check
		this.messages.put(0x03C9, "Wnosi zakład o wysokości "); //Bet
		this.messages.put(0x03CA, "Otrzymał kart: "); //Otrzymane karty
		
		
		//-- Cards
	
		this.messages.put(0x03CE, "Identyfikator figury po za zakresem.");
		this.messages.put(0x03CF, "Identyfikator Koloru po za zakresem.");
		
		//-- Table
		

		this.messages.put(0x03D8, "Wcześniej nacisnołes przycisk gotowości.");
		this.messages.put(0x03D9, "Nie jest już gotowy do gry ...");
		this.messages.put(0x03D0, "Jest gotowy do gry ...");
		this.messages.put(0x03DA, "Odszedł od stołu...");
		this.messages.put(0x03DB, "Dołączył do stołu...");
		this.messages.put(0x03DC, "Gracz siedzący przy innym stole nie może się przesiąść.");
		this.messages.put(0x03DD, "Serwer nie posiada stołów. Proszę utworzyć.");
		this.messages.put(0x03DE, "Podany stół nie istnieje.");
		this.messages.put(0x03DF, "Podany przez Ciebie nazwa stołu jest już w użyciu");
		this.messages.put(0x03E1, "Długość opisu stołu jest po za zakresem.");
		this.messages.put(0x03E2, "Długość hasła jest po za zakresem.");
		this.messages.put(0x03E3, "Wart. dużej w ciemno jest po za zakresem.");
		this.messages.put(0x03E4, "Wart. małej w ciemno jest po za zakresem.");
		this.messages.put(0x03E5, "Min. il. żetonów, aby uczestniczyć w grze jest po za zakresem");
		this.messages.put(0x03E6, "Maks. il. obserwatorów jest po za zakresem");
		this.messages.put(0x03E7, "Maksymalna ilość graczy jest po za zakresem.");
		this.messages.put(0x03E8, "Minimalnośc ilość graczy jest po za zakresem.");
		this.messages.put(0x03E9, "Masz zbyt mało funduszy, aby dołączyć do gry");
		this.messages.put(0x03E0, "Nieprawidłowa struktóra danych.");
		this.messages.put(0x03EA, "Nie można dołączyć jako gracz. Gra jest w toku lub brak miejsc.");
		this.messages.put(0x03EB, "Nie można wykonać operacji - Stół jest zablokowany.");
		this.messages.put(0x03EC, "Jesteś już obserwatorem");
		this.messages.put(0x03ED, "Jesteś już graczem lub nie dołączyłeś jeszcze do stołu.");
		this.messages.put(0x03EE, "Nie można dołączyć jako obserwator. Brak wolnych miejsc.");
		this.messages.put(0x03EF, "Nie można dołączyć jako gracz. Trwa gra lub brak wolnych miejsc.");
		// -- Player
		
		
		this.messages.put(0x03FE, "Podany użytkownik nie istnieje.");
		this.messages.put(0x03FF, "Podany przez Ciebie Login jest już w użyciu");
		
		
		
		
		
		/** ---------------- [0xFF] messages ---------------- */
		
		
		
		
		//Pozytywne & informacje
		this.messages.put(0xFF00, "Baza utworzona");
		
		//Negatywne & ostrzeżenia
		this.messages.put(0xFFFC, "Nieprawidłowa struktóra odpowiedzi (Zawiera za mało kodów komunikatów): ");
		this.messages.put(0xFFFE, "Wystąpił błąd podczas pobierania komunikatu o kodzie: ");
		this.messages.put(0xFFFD, "Komunikat o kodzie: ");	//Człon [1/2]
		this.messages.put(0xFFFE, "nie istnieje");			//Człon [2/2]
		this.messages.put(0xFFFF, "Podany komunikat nie istnieje");
		
	}
	
	
	//------------------ [Komunikaty] - #END ------------------
	
	//------------------ [Metody] - #START ------------------

	
	/**
	 * 
	 * @param M_car
	 * @param M_id
	 * @return
	 */
	public String getMessage(int mCode)
	{
		if(isExistMessage(mCode))
			return this.messages.get(mCode);
		else
			return null;
	}
	
	/**
	 * 
	 * @param mCode
	 * @return
	 */
	public boolean isExistMessage(int mCode)
	{
		return this.messages.containsKey(mCode);
	}
	
	
	//------------------ [Metody] - #KONIEC ------------------
}
